topic "Макросы DinrusIDE";
[l288;i704;a17;O9;~~~.992;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[i288;b167;a42;O9;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;a17;2 $$6,6#27521748481378242620020725143825:desc]
[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[t4167;C2 $$10,0#37138531426314131251341829483380:class]
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[b83;*+117 $$19,19#1546C2CD4112BAB0A26C534D6F11ED13:subtitle]
[ph2 $$20,20#DD7DA091E475BE28D02C795D449A6B57:TextInTable]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%RU-RU 
[s2; [@3 Макросы DinrusIDE]&]
[s3; [@3 Содержание]&]
[s0; &]
[s3; [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#1^ 1. Обзор]&]
[s3; [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2^ 2. DinrusIDE `- 
API]&]
[s3;     [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2`.1^ 2.1 Методы 
редактирования текста]&]
[s3;     [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2`.2^ 2.2 Файловые 
методы]&]
[s3;     [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2`.3^ 2.3 Методы 
взаимодействия с пользователем]&]
[s3;     [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2`.4^ 2.4 Методы 
построения и выполнения]&]
[s3;     [^topic`:`/`/DinrusIDE`/app`/macros`_ru`-ru`#2`.5^ 2.5 Информативны
е методы]&]
[s0; &]
[s3;:1: [@(128.0.255) 1. Обзор]&]
[s5; Макросы DinrusIDE пишутся на  [^topic`:`/`/Esc`/srcdoc`/Esc`_ru`-ru^ E
sc языке сценариев] и помещаются в 
файлы .usc. Файлы .usc могут быть либо 
частью обычных пакетов, либо помещены 
в Общую или Локальную директорию.&]
[s5; Определение макроса в файле .usc начинается 
с заголовка в следующей форме:&]
[s0; &]
[s7; [* macro] [*/@4 Macro`_menu][* :][*/@4 Macro`_item] [*/@4 Key]&]
[s0; &]
[s5; гдк [*/@4 Macro`_menu] и [*/@4 Macro`_item] являются 
текстовыми литералами (с синтаксисом 
Си), а [*/@4 Key] `- описание ключа, подобное 
тем, что показаны в меню. [*/@4 Macro`_menu] 
с [@(0.0.255) :] и [*/@4 Key] могут быть пропущены. 
За заголовком макроса следует тело 
[^topic`:`/`/Esc`/srcdoc`/Esc`_ru`-ru^ Esc].&]
[s5; Примеры:&]
[s0; &]
[s7; macro `"Навигация`":`"Найти далее `\`"TopWindow`\`"`" 
Ctrl`+T `{&]
[s7; -|.Find(`"TopWindow`");&]
[s7; `}&]
[s7; &]
[s7; macro `"Вставить текущую дату`" `{&]
[s7; -|s `= `[`];&]
[s7; -|tm `= GetSysTime();&]
[s7; -|s << to`_string(tm.year) << `"`-`" << to`_string(tm.month) 
<< `"`-`" << to`_string(tm.day);&]
[s7; -|.Insert(s);&]
[s7; `}&]
[s0; &]
[s5; Формально, с точки зрения Esc, макрос 
является `"методом`" редактора `- все 
команды редактора записаны в нотации 
`"method`" (начинающейся с точки).&]
[s5; Могут быть определены дополнительные 
функции,`- используется ключевое слово 
[*/@5 fn]:&]
[s0; &]
[s7; fn Duplicate(str) `{&]
[s7; -|return str `+ str;&]
[s7; `}&]
[s0; &]
[s5; Определённые подобным образом функции 
могут запросто вызываться в коде 
макроса как глобальные.&]
[s3;:2: [@5 2. DinrusIDE `- API]&]
[s19;:2`.1: [@(128.0.255) 2.1 Методы редактирования 
текста]&]
[s5; Большинство методов редактирования 
кода представляется в двух `"перегруженных`" 
(`"overloaded`") формах `- implicit (косвенная), 
которая работает с курсорами и выделением, 
либо в explicit (явной), с заданными позициями.&]
[s0; &]
[ {{3667:6333h1;@(204) [s0; Метод]
:: [s0; Описание]
::^@2 [s0;ph [*C+75 GetLength()]]
:: [s20; Длина текста.]
:: [s0;ph [*C+75 GetLineCount()]]
:: [s20; Число строк в тексте.]
:: [s0;ph [*C+75 GetLinePos(][/C+75 строка][*C+75 )]]
:: [s20; Позиция(смещение от начала файла) 
первого символа [/ строки].]
:: [s0;ph [*C+75 GetLineLength(][/C+75 строка][*C+75 )]]
:: [s20; Возвращает  число символов в заданной 
строке.]
:: [s0;ph [*C+75 GetCursor()]]
:: [s20; Смещение курсора.]
:: [s0;ph [*C+75 GetLine(][/C+75 позиция][*C+75 )]]
:: [s20; Строка для заданной [/ позиция].]
:: [s0;ph [*C+75 GetColumn(][/C+75 позиция][*C+75 )]]
:: [s20; Позиция в строке для заданной [/ позиция].]
:: [s0;ph [*C+75 GetSelBegin()]]
:: [s20; Начало выделения.]
:: [s0;ph [*C+75 GetSelCount()]]
:: [s20; Число символов в выделении. Если 
ноль, GetSelBegin() равно GetCursor().]
:: [s0;ph [*C+75 SetCursor(][/C+75 позиция][*C+75 )]]
:: [s20; Установить курсор в данную [/ позиция].]
:: [s0;ph [*C+75 SetSelection(][/C+75 позиция][*C+75 , ][/C+75 счёт][*C+75 )]]
:: [s20; Установить выделение, начиная с [/ позиция 
со] [/ счёт ]символов.]
:: [s0;ph [*C+75 ClearSelection()]]
:: [s20; Отменяет выделение.]
:: [s0;ph [*C+75 Get(][/C+75 позиция][*C+75 , ][/C+75 счёт][*C+75 )]]
:: [s20; Возвращает  массив символов [/ счёт], 
начиная с [/ позиция .]]
:: [s0;ph [*C+75 Get(][/C+75 позиция][*C+75 )]]
:: [s20; То же что и Get(позиция, 1).]
:: [s0;ph [*C+75 Remove(][/C+75 позиция][*C+75 , ][/C+75 счёт][*C+75 )]]
:: [s20; Удаляет [/ счёт ]символов с [/ позиция.]]
:: [s0;ph [*C+75 Remove(][/C+75 счёт][*C+75 )]]
:: [s20; То же что и Remove(GetCursor(), [/ счёт ]) `- удаляет 
[/ счёт ]символов с позиции курсора.]
:: [s0;ph [*C+75 Remove()]]
:: [s20; То же что и Remove(GetSelBegin(), GetSelCount()) `- 
удаляет выделение.]
:: [s0;ph [*C+75 Insert(][/C+75 позиция][*C+75 , ][/C+75 текст][*C+75 )]]
:: [s20; Вставляет массив символов [/ текст 
]в [/ позиция.]]
:: [s0;ph [*C+75 Insert(][/C+75 текст][*C+75 )]]
:: [s20; То же что и Insert(GetCursor(), [/ text]) `- вставляет 
[/ текст ]в позиции курсора.]
:: [s0;ph [*C+75 Find(][/C+75 текст][*C+75 , ][/C+75 вниз][*C+75 , ][/C+75 всё`_слов
о][*C+75 , ][/C+75 игнорировать`_регистр][*C+75 , 
][/C+75 уайллкарды][*C+75 )]]
:: [s20; Находит [/ текст ], используя указанные 
опции. Опции можно опустить `- в этом 
случае [/ вниз] считается верным, а остальные 
опции неверными. Если текст найден, 
функция вернёт 1, в противном случае 
`- 0.]
:: [s0;ph [*C+75 Replace(][/C+75 текст][*C+75 , ][/C+75 заменить`_на][*C+75 , 
][/C+75 всё`_слово][*C+75 , ][/C+75 игнорировать`_регистр][*C+75 ,
 ][/C+75 уайллкарды][*C+75 )]]
:: [s20; Блочная замена, с применением заданных 
опций. Опции можно не указывать `- 
в таком случае они считаются неверными. 
Возвращает  число заменённых строк.]
:: [s0;ph [*C+75 MoveLeft(...)]&]
[s0;ph [*C+75 MoveRight(...)]&]
[s0;ph [*C+75 MoveWordLeft(...)]&]
[s0;ph [*C+75 MoveWordRight(...)]&]
[s0;ph [*C+75 MoveUp(...)]&]
[s0;ph [*C+75 MoveDown(...)]&]
[s0;ph [*C+75 MoveHome(...)]&]
[s0;ph [*C+75 MoveEnd(...)]&]
[s0;ph [*C+75 MovePageUp(...)]&]
[s0;ph [*C+75 MovePageDown(...)]&]
[s0;ph [*C+75 MoveTextBegin(...)]&]
[s0;ph [*C+75 MoveTextEnd(...)]&]
[s0;ph [*C+75 MoveLeft(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveRight(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveWordLeft(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveWordRight(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveUp(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveDown(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveHome(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveEnd(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MovePageUp(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MovePageDown(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveTextBegin(][/C+75 выд][*C+75 )]&]
[s0;ph [*C+75 MoveTextEnd(][/C+75 выд][*C+75 )]]
:: [s20; Перемещает курсор в указанном направлении. 
Вариант с [/ выд] производит выделение 
(как и соответствующее перемещение 
при нажатой клавише Shif), если [/ sel] равно 
1.]}}&]
[s0; &]
[s19;:2`.2: [@(128.0.255) 2.2 Файловые методы]&]
[s5; В этой секции сгруппированы методы, 
позволяющие манипулировать файлами 
DinrusIDE.&]
[s0; &]
[ {{3667:6333h1;@(204) [s0; Метод]
:: [s0; Описание]
::^@2 [s0;ph [*C+75 FileName()]]
:: [s20; Возвращает  имя текущего редактируемого 
файла.]
:: [s0;ph [*C+75 EditFile(][/C+75 путь][*C+75 )]&]
[s0;ph [*C+75 EditFile(][/C+75 имяф, пкт][*C+75 )]]
:: [s20; Открывает указанный файл в редакторе.]
:: [s0;ph [*C+75 SaveCurrentFile()]]
:: [s20; Сохраняет файл в активной вкладке]
:: [s0;ph [*C+75 CloseFile()]]
:: [s20; Закрывает активную вкладку]}}&]
[s0; &]
[s19;:2`.3: [@(128.0.255) 2.3 Методы взаимодействия 
с пользователем]&]
[s5; Время от времени необходимо передавать 
какую`-то информацию от пользователя 
макросу или наоборот, чем и занимаются 
данные методы.&]
[s0; &]
[ {{3629:6371h1;@(204) [s0; Метод]
:: [s0; Описание]
::^@2 [s0;ph [*C+75 Input(][/C+75 ярлык, ...][*C+75 )]]
:: [s20; Простой диалог ввода. Предоставляет 
столько же текстовых полей, сколько 
задано в параметрах ярлыков для этих 
полей. Если пользователь выбрал `"Отмена`", 
возвращается void, в противном случае 
`- единичная строка, если поле редактирования
 только одно, или массив строк, если 
полей редактирования несколько.]
:: [s0;ph [*C+75 ClearConsole()]]
:: [s20; Очистить консоль вывода.]
:: [s0;ph [*C+75 Echo(][/C+75 ...][*C+75 )]]
:: [s20; Выводит все аргументы на консоль 
вывода, по одному на строку.]}}&]
[s0; &]
[s19;:2`.4: [@(128.0.255) 2.4 Методы построения и выполнения]&]
[s5; Для расширения способностей DinrusIDE 
может использоваться макрокоманда 
(макрос). Для этого есть несколько 
методов, позволяющих выполнять другие 
программы, а также триггировать построение 
пакетов U`+`+.&]
[s0; &]
[ {{3667:6333h1;@(204) [s0; Метод]
:: [s0; Описание]
::^@2 [s0;ph [*C+75 Execute(][/C+75 кмд`_стр][*C+75 )]]
:: [s20; Выполняет строку команды, захватывая 
вывод на консоль.]
:: [s0;ph [*C+75 Launch(][/C+75 кмд`_стр][*C+75 )]]
:: [s20; Запускает приложение.]
:: [s0;ph [*C+75 Build(][/C+75 `[флаги`[, фвыхода`]`]][*C+75 )]]
:: [s20; Строит открытый главный пакет. Могут 
использоваться необязательные параметры 
для указания флагов (напр., `"GUI MT`") 
и целевой путь для скомпилированных 
исполнимых.]
:: [s0;ph [*C+75 BuildProject(][/C+75 uppфайл, флаги`[, фвыхода`]][*C+75 )]]
:: [s20; То же что и выше, но работает с любым 
пакетом, задаваемым передачей пути 
к его файлу .upp в качестве первого 
параметра.]}}&]
[s0; &]
[s19;:2`.5: [@(128.0.255) 2.5 Информативные методы]&]
[s5; Методы, предоставляющие информацию 
о пакетах и настройках построения. 
Если опционный параметр [/ пкт] не указан, 
используется текущий выделенный 
пакет.&]
[s0; &]
[ {{3667:6333h1;@(204) [s0; Метод]
:: [s0; Описание]
::^@2 [s0; [*C+75 ActivePackage()]]
:: [s20; Имя пакета, которому принадлежит 
текущий редактируемый файл.]
:: [s0; [*C+75 MainPackage()]]
:: [s20; Имя главного пакета.]
:: [s0; [*C+75 AllPackages()]]
:: [s20; Массив из всех используемых пакетов]
:: [s0; [*C+75 PackageDir(][/C+75 `[пкт`]][*C+75 )]]
:: [s20; Директория, в которой находится пакет.]
:: [s0; [*C+75 PackageFiles(][/C+75 `[пкт`]][*C+75 )]]
:: [s20; Список всех файлов в пакете]
:: [s0; [*C+75 Assembly()]]
:: [s20; Имя сборки]
:: [s0; [*C+75 Flags()]]
:: [s20; Массив из установленных на данный 
момент флагов построения]
:: [s0; [*C+75 BuildMethod()]]
:: [s20; Текущий выбранный метод построения]
:: [s0; [*C+75 BuildMode()]]
:: [s20; Текущий выбранный режим построения 
(0 `= Отладка, 1 `= Оптимально, 2 `= Скорость, 
3 `= Размер).]
:: [s0; [*C+75 Target()]]
:: [s20; Возвращает  текущее целевое имя. Чтобы 
получить это значение, вначале нужно 
построить проект.]}}&]
[s0; ]]